package trabalho.pkg3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

//Lista de nós na rede p2p

public class ListaNos
{
    private List<String> NoNome;
    private List<String> NoIp;
    private File lista = new File("ListaNos.txt"); //Arquivo com o nome dos nós
    
    public ListaNos() throws IOException
    {
        NoNome = new ArrayList<String>();
        NoIp = new ArrayList<String>();
        lista.createNewFile();
    }
    
    public void Salvar() throws IOException
    {
        //Cria o FW e permite reescrita sem apagar (parametro true)
        FileWriter fw = new FileWriter(getLista(), true);
        PrintWriter out = new PrintWriter(fw);
        
        for(int i = 0; i < getNoNome().size(); i++)
        {
            out.println(getNoNome().get(i));
            out.flush();
            out.println(getNoIp().get(i));
            out.flush();
        }
    }
    
    //Ler arquivo
    public void ler() throws FileNotFoundException
    {
        Scanner scan = new Scanner(new FileInputStream(getLista()));
        
        while(scan.hasNextLine())
        {
            getNoNome().add(scan.nextLine());
            getNoIp().add(scan.nextLine());
        }
    }
    
    public void remove(String nome) throws IOException
    {
        int i=0;
        while(i<NoNome.size())
        {
            if(nome.equalsIgnoreCase((String)NoNome.get(i)))
            {
                NoNome.remove(i);
                NoIp.remove(i);
                i = NoNome.size();
            }
            i++;
        }
        Salvar();
    }

    /**
     * @return the NoNome
     */
    public List<String> getNoNome()
    {
        return NoNome;
    }

    /**
     * @param NoNome the NoNome to set
     */
    public void setNoNome(List<String> NoNome)
    {
        this.NoNome = NoNome;
    }

    /**
     * @return the NoIp
     */
    public List<String> getNoIp()
    {
        return NoIp;
    }

    /**
     * @param NoIp the NoIp to set
     */
    public void setNoIp(List<String> NoIp)
    {
        this.NoIp = NoIp;
    }

    /**
     * @return the lista
     */
    public File getLista()
    {
        return lista;
    }

    /**
     * @param lista the lista to set
     */
    public void setLista(File lista)
    {
        this.lista = lista;
    }
}